/// 计算购买烫金纸多少卷，在这里默认烫金纸为64cm宽，并且为120米长
/// 目前假设只有一块烫金版，不考虑多块的情况
///
/// 整个计算只需要输入成品所需要的长宽就可以了，函数会自动计算尺寸的余量以及试机伸放
///
/// 需要注意的是，烫金版的长和宽是不同的（因为一个对应61厘米，一个对应120米），因此在计算的时候需要提前考虑好哪边是长，哪边是宽
double calcFoil({
  /// 沿着卷筒一边的长度，对应120米的长度
  required double lengthMm,

  /// 横向长度，对应64cm宽
  required double widthMm,

  /// 需要烫印的数量，假设会有至少30张伸放
  required int number,
}) {
  // 1. 先将长和宽添加余量
  // 假设头和尾至少需要留2cm的空挡，防止前后烫金错位
  final fullLengthMm = lengthMm + 20;
  // 假设侧边至少需要留2cm来应对可能的错误和误差
  final fullWidthMm = widthMm + 20;

  // 2. 将数量添加试机量
  // 假设试机需要50次烫金，一般来说用不掉那么多
  final fullNumber = number + 50;

  // 3. 计算一卷烫金纸可以容纳多少个宽度
  // 在这一步中，可能会有很多浪费但是目前无法检测
  final split = (640 / fullWidthMm).floor();

  // 4. 计算每个卷能烫多少次
  // 1米=1000毫米
  final stampNumberPerSplit = ((120 * 1000) / fullLengthMm).floor();

  // 5. 将分切数乘以每小卷的次数，就是整卷烫金纸能烫多少数量
  final stampNumberPerFoil = split * stampNumberPerSplit;

  // 6. 用总次数除以每卷烫金纸可以烫的数量，就计算出了需要多少烫金纸，取2位小数即可
  // 这里取小数的方法有点繁琐，是先转化为字符串，然后又重新parse成double
  return double.parse((fullNumber / stampNumberPerFoil).toStringAsFixed(2));
}
